#!/usr/bin/env python
# -*- coding:utf-8 -*- #

import simplejson as json


class Data(object):
    """docstring for Data"""
    def __init__(self, msg):
        'TODO raise exception if msg is not dict'
        # msg = {'硬盘剩余': [2.4, "GB"],'硬盘使用率': [57.0, "%"]}
        dict.update(msg)
        self.msg = msg
        
    def get_result(self):
        return self.msg

    def update(self, elems):
        #elems= {'filter': 'monitor_filter', 'is_attention': 0, 'type': 3, 'id': 21, 'datetime': 1333011170}
        self.msg.update(elems)
        
        '''
        # update后的数据
        self.msg = {'filter': 'monitor_filter', 
        '硬盘剩余': [2.4, "GB"],
        'datetime': 1333011170, 
        'type': 3, 
        'id': 21, 
        ''硬盘使用率': [57.0, "%"], 
        'is_attention': 0}
        
        如果是报警会升级 is_attention = 1
        '''
    def get(self, key):
        return self.msg.get(key)

    def __str__(self):
        return json.dumps(self.msg)

class InfoData(Data):
    """use for success data"""
    def __init__(self, msg):
        print "Info Data msg",msg
        super(InfoData, self).__init__(msg)
        #self.msg.update({'level':'0'})


class WarningData(Data):
    """use for WarningData data"""
    def __init__(self, msg):
        super(WarningData, self).__init__(msg)
        #self.msg.update({'level':'1'})


#class ErrorData(Data):
    #"""use for Error data"""
    #def __init__(self, msg):
        #super(ErrorData, self).__init__(msg)
        ##self.msg.update({'level':'2'})


#class CriticalData(Data):
    #"""docstring for CriticalData"""
    #def __init__(self, msg):
        #super(CriticalData, self).__init__(msg)
        ##self.msg.update({'level':'3'})


#class FatalErrorData(Data):
    #"""docstring for CriticalData"""
    #def __init__(self, msg):
        #super(FatalErrorData, self).__init__(msg)
        ##self.msg.update({'level':'4'})
